def distribute(seq):
    n = len(seq)//2
    return [list(x) for x in zip(seq[:n], seq[n:])]  #返回一个大列表，里面还套着生成x的小列表
    # return list(x for x in zip(seq[:n], seq[n:]))
'''[:n] =[0:n:1]从第一个元素开始，一直到开区间的n，步长默认为1 
[n:]=[n::1] 从下标为n的元素开始，一直到列表最后一个元素，默认步长1 '''
seq = ['a','b','c','d','e','f','g','h','i']
n=len(seq)//2   # 取整除运算，只返回商的整数部分 n=9//2=4
print(seq[:n])  # ['a', 'b', 'c', 'd']
print(seq[n:])  # ['e', 'f', 'g', 'h', 'i']

print (distribute(['a','b','c','d','e','f','g','h','i']))
print (distribute([1, 2, 3, 9, 8, 7, 4, 5, 6, 0]))



def distribution(list):
    import numpy as np
    # 生成的列表
    new_list = []

    # 统计有哪些数   unique该函数是去除数组中的重复数字，并进行排序之后输出。
    set_list = np.unique(list)
    # print(set_list)   [0 1 2 3 4]

    # 统计每个数出现的次数  count() 方法用于统计某个元素在列表中出现的次数。
    count_list = []
    for i in set_list:
        count_list.append(list.count(i))
    print(count_list) # 0-4依次出现的次数 [8, 4, 2, 1, 1]

    # 生成字典
    list1 = dict(zip(set_list, count_list)) # key ：value
    print('list1', list1)

    # 出现次数排序
    from operator import itemgetter
    list2 = [index for index, value in sorted(enumerate(list1), key=itemgetter(1), reverse=True)]
    print('list2', list2)

    count_number = 0
    for i in list2:
        if list1[i] == 1:  # 出现次数为1的数字
            new_list.append(i)
            count_number += 1
        elif list1[i] != 1:
            k = list1[i]
            count_number += k
            for j in range(k):
                new_list.insert(j * int(count_number / k), i)

    print(new_list)
    return new_list


list = [0, 0, 0, 0, 1, 1, 1, 0, 2, 3, 0, 0, 0, 1, 2, 4]
distribution(list)